

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
    <style>
    /* base */
    html,
    body,
    .container {
      width: 100%;
      height: 100%;
    }

    a,
    a:link,
    a:visited {
      text-decoration: none;
      color: inherit;
    }

    ul {
      list-style: none;
    }

    *,
    ::before,
    ::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    *:focus {
      outline: 0;
    }

    .container {
      display: flex;
      padding-top: 20px;
    }

    /* Nav */
    .container .doc-nav {
      position: fixed;
      height: 100%;
      margin: 0 30px 0 40px;
      width: 280px;
    }

    .doc-nav .nav-header {
      display: flex;
      align-items: center;
      box-sizing: border-box;
      background-color: rgb(240, 241, 242);
      height: 40px;
      padding: 16px;
      font-size: 18px;
      font-weight: 500;
      color: rgb(62, 64, 66);
      cursor: pointer;
    }

    .doc-nav .nav-content {
      height: calc(100% - 40px);
      overflow-y: auto;
      color: rgb(32, 34, 36);
    }

    .doc-nav .nav-content .nav-list,
    .doc-nav .nav-content .nav-sub-list {
      line-height: 1.5rem;
    }

    .doc-nav .nav-content .nav-label {
      display: inline-block;
      position: relative;
      padding: 2px 0 2px 20px;
      margin-bottom: 4px;
    }

    .doc-nav .nav-content .nav-sub-label {
      position: relative;
      padding: 2px 0 2px 40px;
      font-size: 14px;
    }

    .doc-nav .nav-content .nav-sub-label:hover {
      text-decoration: underline;
    }

    .doc-nav .nav-content .nav-list .nav-label.group::before {
      border-bottom: 0.25rem solid transparent;
      border-left: 0.25rem solid #6e7072;
      border-right: 0;
      border-top: 0.25rem solid transparent;
      content: '';
      display: block;
      height: 0;
      left: 0.5rem;
      position: absolute;
      top: 0.625rem;
      transition: transform 0.1s linear;
      width: 0;
    }

    .doc-nav .nav-content .nav-list .nav-label.group.active::before {
      transform: rotate(90deg);
    }

    /* doc content */
    .container .doc-content {
      position: fixed;
      height: 100%;
      width: calc(100% - 80px - 40px - 30px - 240px);
      right: 0%;
      overflow-y: auto;
    }

    .doc-title {
      border-bottom: 1px solid #dcdee0;
      font-size: 22px;
      margin: 8px 0 0;
      padding-bottom: 16px;
    }

    .doc-content h3 {
      font-size: 24px;
      font-weight: 600;
      margin: 24px 0;
    }

    .doc-content h4 {
      font-size: 22px;
      font-weight: 500;
      margin: 30px 0 8px;
    }

    .doc-content h4 span {
      color: #007d9c;
    }

    .doc-content .doc-declare {
      background-color: #fafafa;
      border-radius: 5px;
      border: 1px solid #ccc;
      font-size: 14px;
      overflow-x: auto;
      padding: 10px;
      tab-size: 4;
      line-height: 20px;
    }

    .doc-content .doc-comment {
      font-size: 16px;
      margin: 16px 0;
      line-height: 24px;
      word-break: break-word;
    }
  </style>

</head>
<body>
  <div class="container">
    <div class="doc-nav">
      <a href="#Documentation" class="nav-header">Documentation</a>
      <nav class="nav-content">
        <ul class="nav-list">
          <li>
            <a href="#includes" class="nav-label">Includes</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#lwip/opt.h" class="nav-sub-label">lwip/opt.h</a>
              </li>
      

              <li>
                <a href="#lwip/ip_addr.h" class="nav-sub-label">lwip/ip_addr.h</a>
              </li>
      

              <li>
                <a href="#lwip/netif.h" class="nav-sub-label">lwip/netif.h</a>
              </li>
      

              <li>
                <a href="#lwip/err.h" class="nav-sub-label">lwip/err.h</a>
              </li>
      

              <li>
                <a href="#lwip/inet.h" class="nav-sub-label">lwip/inet.h</a>
              </li>
      

              <li>
                <a href="#lwip/errno.h" class="nav-sub-label">lwip/errno.h</a>
              </li>
      

              <li>
                <a href="#string.h" class="nav-sub-label">string.h</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#macros" class="nav-label">Macros</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#LWIP_HDR_SOCKETS_H" class="nav-sub-label">LWIP_HDR_SOCKETS_H</a>
              </li>
      

              <li>
                <a href="#IOV_MAX" class="nav-sub-label">IOV_MAX</a>
              </li>
      

              <li>
                <a href="#MSG_TRUNC" class="nav-sub-label">MSG_TRUNC</a>
              </li>
      

              <li>
                <a href="#MSG_CTRUNC" class="nav-sub-label">MSG_CTRUNC</a>
              </li>
      

              <li>
                <a href="#ALIGN_H(size)" class="nav-sub-label">ALIGN_H(size)</a>
              </li>
      

              <li>
                <a href="#ALIGN_D(size)" class="nav-sub-label">ALIGN_D(size)</a>
              </li>
      

              <li>
                <a href="#CMSG_FIRSTHDR(mhdr)" class="nav-sub-label">CMSG_FIRSTHDR(mhdr)</a>
              </li>
      

              <li>
                <a href="#CMSG_NXTHDR(mhdr, cmsg)" class="nav-sub-label">CMSG_NXTHDR(mhdr, cmsg)</a>
              </li>
      

              <li>
                <a href="#CMSG_DATA(cmsg)" class="nav-sub-label">CMSG_DATA(cmsg)</a>
              </li>
      

              <li>
                <a href="#CMSG_SPACE(length)" class="nav-sub-label">CMSG_SPACE(length)</a>
              </li>
      

              <li>
                <a href="#CMSG_LEN(length)" class="nav-sub-label">CMSG_LEN(length)</a>
              </li>
      

              <li>
                <a href="#IFNAMSIZ" class="nav-sub-label">IFNAMSIZ</a>
              </li>
      

              <li>
                <a href="#SOCK_STREAM" class="nav-sub-label">SOCK_STREAM</a>
              </li>
      

              <li>
                <a href="#SOCK_DGRAM" class="nav-sub-label">SOCK_DGRAM</a>
              </li>
      

              <li>
                <a href="#SOCK_RAW" class="nav-sub-label">SOCK_RAW</a>
              </li>
      

              <li>
                <a href="#SO_REUSEADDR" class="nav-sub-label">SO_REUSEADDR</a>
              </li>
      

              <li>
                <a href="#SO_KEEPALIVE" class="nav-sub-label">SO_KEEPALIVE</a>
              </li>
      

              <li>
                <a href="#SO_BROADCAST" class="nav-sub-label">SO_BROADCAST</a>
              </li>
      

              <li>
                <a href="#SO_DEBUG" class="nav-sub-label">SO_DEBUG</a>
              </li>
      

              <li>
                <a href="#SO_ACCEPTCONN" class="nav-sub-label">SO_ACCEPTCONN</a>
              </li>
      

              <li>
                <a href="#SO_DONTROUTE" class="nav-sub-label">SO_DONTROUTE</a>
              </li>
      

              <li>
                <a href="#SO_USELOOPBACK" class="nav-sub-label">SO_USELOOPBACK</a>
              </li>
      

              <li>
                <a href="#SO_LINGER" class="nav-sub-label">SO_LINGER</a>
              </li>
      

              <li>
                <a href="#SO_DONTLINGER" class="nav-sub-label">SO_DONTLINGER</a>
              </li>
      

              <li>
                <a href="#SO_OOBINLINE" class="nav-sub-label">SO_OOBINLINE</a>
              </li>
      

              <li>
                <a href="#SO_REUSEPORT" class="nav-sub-label">SO_REUSEPORT</a>
              </li>
      

              <li>
                <a href="#SO_SNDBUF" class="nav-sub-label">SO_SNDBUF</a>
              </li>
      

              <li>
                <a href="#SO_RCVBUF" class="nav-sub-label">SO_RCVBUF</a>
              </li>
      

              <li>
                <a href="#SO_SNDLOWAT" class="nav-sub-label">SO_SNDLOWAT</a>
              </li>
      

              <li>
                <a href="#SO_RCVLOWAT" class="nav-sub-label">SO_RCVLOWAT</a>
              </li>
      

              <li>
                <a href="#SO_SNDTIMEO" class="nav-sub-label">SO_SNDTIMEO</a>
              </li>
      

              <li>
                <a href="#SO_RCVTIMEO" class="nav-sub-label">SO_RCVTIMEO</a>
              </li>
      

              <li>
                <a href="#SO_ERROR" class="nav-sub-label">SO_ERROR</a>
              </li>
      

              <li>
                <a href="#SO_TYPE" class="nav-sub-label">SO_TYPE</a>
              </li>
      

              <li>
                <a href="#SO_CONTIMEO" class="nav-sub-label">SO_CONTIMEO</a>
              </li>
      

              <li>
                <a href="#SO_NO_CHECK" class="nav-sub-label">SO_NO_CHECK</a>
              </li>
      

              <li>
                <a href="#SO_BINDTODEVICE" class="nav-sub-label">SO_BINDTODEVICE</a>
              </li>
      

              <li>
                <a href="#SOL_SOCKET" class="nav-sub-label">SOL_SOCKET</a>
              </li>
      

              <li>
                <a href="#AF_UNSPEC" class="nav-sub-label">AF_UNSPEC</a>
              </li>
      

              <li>
                <a href="#AF_INET" class="nav-sub-label">AF_INET</a>
              </li>
      

              <li>
                <a href="#AF_INET6" class="nav-sub-label">AF_INET6</a>
              </li>
      

              <li>
                <a href="#AF_INET6" class="nav-sub-label">AF_INET6</a>
              </li>
      

              <li>
                <a href="#PF_INET" class="nav-sub-label">PF_INET</a>
              </li>
      

              <li>
                <a href="#PF_INET6" class="nav-sub-label">PF_INET6</a>
              </li>
      

              <li>
                <a href="#PF_UNSPEC" class="nav-sub-label">PF_UNSPEC</a>
              </li>
      

              <li>
                <a href="#IPPROTO_IP" class="nav-sub-label">IPPROTO_IP</a>
              </li>
      

              <li>
                <a href="#IPPROTO_ICMP" class="nav-sub-label">IPPROTO_ICMP</a>
              </li>
      

              <li>
                <a href="#IPPROTO_TCP" class="nav-sub-label">IPPROTO_TCP</a>
              </li>
      

              <li>
                <a href="#IPPROTO_UDP" class="nav-sub-label">IPPROTO_UDP</a>
              </li>
      

              <li>
                <a href="#IPPROTO_IPV6" class="nav-sub-label">IPPROTO_IPV6</a>
              </li>
      

              <li>
                <a href="#IPPROTO_ICMPV6" class="nav-sub-label">IPPROTO_ICMPV6</a>
              </li>
      

              <li>
                <a href="#IPPROTO_UDPLITE" class="nav-sub-label">IPPROTO_UDPLITE</a>
              </li>
      

              <li>
                <a href="#IPPROTO_RAW" class="nav-sub-label">IPPROTO_RAW</a>
              </li>
      

              <li>
                <a href="#MSG_PEEK" class="nav-sub-label">MSG_PEEK</a>
              </li>
      

              <li>
                <a href="#MSG_WAITALL" class="nav-sub-label">MSG_WAITALL</a>
              </li>
      

              <li>
                <a href="#MSG_OOB" class="nav-sub-label">MSG_OOB</a>
              </li>
      

              <li>
                <a href="#MSG_DONTWAIT" class="nav-sub-label">MSG_DONTWAIT</a>
              </li>
      

              <li>
                <a href="#MSG_MORE" class="nav-sub-label">MSG_MORE</a>
              </li>
      

              <li>
                <a href="#MSG_NOSIGNAL" class="nav-sub-label">MSG_NOSIGNAL</a>
              </li>
      

              <li>
                <a href="#IP_TOS" class="nav-sub-label">IP_TOS</a>
              </li>
      

              <li>
                <a href="#IP_TTL" class="nav-sub-label">IP_TTL</a>
              </li>
      

              <li>
                <a href="#IP_PKTINFO" class="nav-sub-label">IP_PKTINFO</a>
              </li>
      

              <li>
                <a href="#TCP_NODELAY" class="nav-sub-label">TCP_NODELAY</a>
              </li>
      

              <li>
                <a href="#TCP_KEEPALIVE" class="nav-sub-label">TCP_KEEPALIVE</a>
              </li>
      

              <li>
                <a href="#TCP_KEEPIDLE" class="nav-sub-label">TCP_KEEPIDLE</a>
              </li>
      

              <li>
                <a href="#TCP_KEEPINTVL" class="nav-sub-label">TCP_KEEPINTVL</a>
              </li>
      

              <li>
                <a href="#TCP_KEEPCNT" class="nav-sub-label">TCP_KEEPCNT</a>
              </li>
      

              <li>
                <a href="#IPV6_CHECKSUM" class="nav-sub-label">IPV6_CHECKSUM</a>
              </li>
      

              <li>
                <a href="#IPV6_V6ONLY" class="nav-sub-label">IPV6_V6ONLY</a>
              </li>
      

              <li>
                <a href="#UDPLITE_SEND_CSCOV" class="nav-sub-label">UDPLITE_SEND_CSCOV</a>
              </li>
      

              <li>
                <a href="#UDPLITE_RECV_CSCOV" class="nav-sub-label">UDPLITE_RECV_CSCOV</a>
              </li>
      

              <li>
                <a href="#IP_MULTICAST_TTL" class="nav-sub-label">IP_MULTICAST_TTL</a>
              </li>
      

              <li>
                <a href="#IP_MULTICAST_IF" class="nav-sub-label">IP_MULTICAST_IF</a>
              </li>
      

              <li>
                <a href="#IP_MULTICAST_LOOP" class="nav-sub-label">IP_MULTICAST_LOOP</a>
              </li>
      

              <li>
                <a href="#IP_ADD_MEMBERSHIP" class="nav-sub-label">IP_ADD_MEMBERSHIP</a>
              </li>
      

              <li>
                <a href="#IP_DROP_MEMBERSHIP" class="nav-sub-label">IP_DROP_MEMBERSHIP</a>
              </li>
      

              <li>
                <a href="#IPV6_JOIN_GROUP" class="nav-sub-label">IPV6_JOIN_GROUP</a>
              </li>
      

              <li>
                <a href="#IPV6_ADD_MEMBERSHIP" class="nav-sub-label">IPV6_ADD_MEMBERSHIP</a>
              </li>
      

              <li>
                <a href="#IPV6_LEAVE_GROUP" class="nav-sub-label">IPV6_LEAVE_GROUP</a>
              </li>
      

              <li>
                <a href="#IPV6_DROP_MEMBERSHIP" class="nav-sub-label">IPV6_DROP_MEMBERSHIP</a>
              </li>
      

              <li>
                <a href="#IPTOS_TOS_MASK" class="nav-sub-label">IPTOS_TOS_MASK</a>
              </li>
      

              <li>
                <a href="#IPTOS_TOS(tos)" class="nav-sub-label">IPTOS_TOS(tos)</a>
              </li>
      

              <li>
                <a href="#IPTOS_LOWDELAY" class="nav-sub-label">IPTOS_LOWDELAY</a>
              </li>
      

              <li>
                <a href="#IPTOS_THROUGHPUT" class="nav-sub-label">IPTOS_THROUGHPUT</a>
              </li>
      

              <li>
                <a href="#IPTOS_RELIABILITY" class="nav-sub-label">IPTOS_RELIABILITY</a>
              </li>
      

              <li>
                <a href="#IPTOS_LOWCOST" class="nav-sub-label">IPTOS_LOWCOST</a>
              </li>
      

              <li>
                <a href="#IPTOS_MINCOST" class="nav-sub-label">IPTOS_MINCOST</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_MASK" class="nav-sub-label">IPTOS_PREC_MASK</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC(tos)" class="nav-sub-label">IPTOS_PREC(tos)</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_NETCONTROL" class="nav-sub-label">IPTOS_PREC_NETCONTROL</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_INTERNETCONTROL" class="nav-sub-label">IPTOS_PREC_INTERNETCONTROL</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_CRITIC_ECP" class="nav-sub-label">IPTOS_PREC_CRITIC_ECP</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_FLASHOVERRIDE" class="nav-sub-label">IPTOS_PREC_FLASHOVERRIDE</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_FLASH" class="nav-sub-label">IPTOS_PREC_FLASH</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_IMMEDIATE" class="nav-sub-label">IPTOS_PREC_IMMEDIATE</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_PRIORITY" class="nav-sub-label">IPTOS_PREC_PRIORITY</a>
              </li>
      

              <li>
                <a href="#IPTOS_PREC_ROUTINE" class="nav-sub-label">IPTOS_PREC_ROUTINE</a>
              </li>
      

              <li>
                <a href="#IOCPARM_MASK" class="nav-sub-label">IOCPARM_MASK</a>
              </li>
      

              <li>
                <a href="#IOC_VOID" class="nav-sub-label">IOC_VOID</a>
              </li>
      

              <li>
                <a href="#IOC_OUT" class="nav-sub-label">IOC_OUT</a>
              </li>
      

              <li>
                <a href="#IOC_IN" class="nav-sub-label">IOC_IN</a>
              </li>
      

              <li>
                <a href="#IOC_INOUT" class="nav-sub-label">IOC_INOUT</a>
              </li>
      

              <li>
                <a href="#_IO(x,y)" class="nav-sub-label">_IO(x,y)</a>
              </li>
      

              <li>
                <a href="#_IOR(x,y,t)" class="nav-sub-label">_IOR(x,y,t)</a>
              </li>
      

              <li>
                <a href="#_IOW(x,y,t)" class="nav-sub-label">_IOW(x,y,t)</a>
              </li>
      

              <li>
                <a href="#FIONREAD" class="nav-sub-label">FIONREAD</a>
              </li>
      

              <li>
                <a href="#FIONBIO" class="nav-sub-label">FIONBIO</a>
              </li>
      

              <li>
                <a href="#SIOCSHIWAT" class="nav-sub-label">SIOCSHIWAT</a>
              </li>
      

              <li>
                <a href="#SIOCGHIWAT" class="nav-sub-label">SIOCGHIWAT</a>
              </li>
      

              <li>
                <a href="#SIOCSLOWAT" class="nav-sub-label">SIOCSLOWAT</a>
              </li>
      

              <li>
                <a href="#SIOCGLOWAT" class="nav-sub-label">SIOCGLOWAT</a>
              </li>
      

              <li>
                <a href="#SIOCATMARK" class="nav-sub-label">SIOCATMARK</a>
              </li>
      

              <li>
                <a href="#F_GETFL" class="nav-sub-label">F_GETFL</a>
              </li>
      

              <li>
                <a href="#F_SETFL" class="nav-sub-label">F_SETFL</a>
              </li>
      

              <li>
                <a href="#O_NONBLOCK" class="nav-sub-label">O_NONBLOCK</a>
              </li>
      

              <li>
                <a href="#O_NDELAY" class="nav-sub-label">O_NDELAY</a>
              </li>
      

              <li>
                <a href="#O_RDONLY" class="nav-sub-label">O_RDONLY</a>
              </li>
      

              <li>
                <a href="#O_WRONLY" class="nav-sub-label">O_WRONLY</a>
              </li>
      

              <li>
                <a href="#O_RDWR" class="nav-sub-label">O_RDWR</a>
              </li>
      

              <li>
                <a href="#SHUT_RD" class="nav-sub-label">SHUT_RD</a>
              </li>
      

              <li>
                <a href="#SHUT_WR" class="nav-sub-label">SHUT_WR</a>
              </li>
      

              <li>
                <a href="#SHUT_RDWR" class="nav-sub-label">SHUT_RDWR</a>
              </li>
      

              <li>
                <a href="#FD_SETSIZE" class="nav-sub-label">FD_SETSIZE</a>
              </li>
      

              <li>
                <a href="#LWIP_SELECT_MAXNFDS" class="nav-sub-label">LWIP_SELECT_MAXNFDS</a>
              </li>
      

              <li>
                <a href="#FDSETSAFESET(n, code)" class="nav-sub-label">FDSETSAFESET(n, code)</a>
              </li>
      

              <li>
                <a href="#FDSETSAFEGET(n, code)" class="nav-sub-label">FDSETSAFEGET(n, code)</a>
              </li>
      

              <li>
                <a href="#FD_SET(n, p)" class="nav-sub-label">FD_SET(n, p)</a>
              </li>
      

              <li>
                <a href="#FD_CLR(n, p)" class="nav-sub-label">FD_CLR(n, p)</a>
              </li>
      

              <li>
                <a href="#FD_ISSET(n,p)" class="nav-sub-label">FD_ISSET(n,p)</a>
              </li>
      

              <li>
                <a href="#FD_ZERO(p)" class="nav-sub-label">FD_ZERO(p)</a>
              </li>
      

              <li>
                <a href="#LWIP_SELECT_MAXNFDS" class="nav-sub-label">LWIP_SELECT_MAXNFDS</a>
              </li>
      

              <li>
                <a href="#POLLIN" class="nav-sub-label">POLLIN</a>
              </li>
      

              <li>
                <a href="#POLLOUT" class="nav-sub-label">POLLOUT</a>
              </li>
      

              <li>
                <a href="#POLLERR" class="nav-sub-label">POLLERR</a>
              </li>
      

              <li>
                <a href="#POLLNVAL" class="nav-sub-label">POLLNVAL</a>
              </li>
      

              <li>
                <a href="#POLLRDNORM" class="nav-sub-label">POLLRDNORM</a>
              </li>
      

              <li>
                <a href="#POLLRDBAND" class="nav-sub-label">POLLRDBAND</a>
              </li>
      

              <li>
                <a href="#POLLPRI" class="nav-sub-label">POLLPRI</a>
              </li>
      

              <li>
                <a href="#POLLWRNORM" class="nav-sub-label">POLLWRNORM</a>
              </li>
      

              <li>
                <a href="#POLLWRBAND" class="nav-sub-label">POLLWRBAND</a>
              </li>
      

              <li>
                <a href="#POLLHUP" class="nav-sub-label">POLLHUP</a>
              </li>
      

              <li>
                <a href="#LWIP_TIMEVAL_PRIVATE" class="nav-sub-label">LWIP_TIMEVAL_PRIVATE</a>
              </li>
      

              <li>
                <a href="#lwip_socket_init()" class="nav-sub-label">lwip_socket_init()</a>
              </li>
      

              <li>
                <a href="#lwip_accept" class="nav-sub-label">lwip_accept</a>
              </li>
      

              <li>
                <a href="#lwip_bind" class="nav-sub-label">lwip_bind</a>
              </li>
      

              <li>
                <a href="#lwip_shutdown" class="nav-sub-label">lwip_shutdown</a>
              </li>
      

              <li>
                <a href="#lwip_getpeername" class="nav-sub-label">lwip_getpeername</a>
              </li>
      

              <li>
                <a href="#lwip_getsockname" class="nav-sub-label">lwip_getsockname</a>
              </li>
      

              <li>
                <a href="#lwip_setsockopt" class="nav-sub-label">lwip_setsockopt</a>
              </li>
      

              <li>
                <a href="#lwip_getsockopt" class="nav-sub-label">lwip_getsockopt</a>
              </li>
      

              <li>
                <a href="#lwip_close" class="nav-sub-label">lwip_close</a>
              </li>
      

              <li>
                <a href="#lwip_connect" class="nav-sub-label">lwip_connect</a>
              </li>
      

              <li>
                <a href="#lwip_listen" class="nav-sub-label">lwip_listen</a>
              </li>
      

              <li>
                <a href="#lwip_recv" class="nav-sub-label">lwip_recv</a>
              </li>
      

              <li>
                <a href="#lwip_recvmsg" class="nav-sub-label">lwip_recvmsg</a>
              </li>
      

              <li>
                <a href="#lwip_recvfrom" class="nav-sub-label">lwip_recvfrom</a>
              </li>
      

              <li>
                <a href="#lwip_send" class="nav-sub-label">lwip_send</a>
              </li>
      

              <li>
                <a href="#lwip_sendmsg" class="nav-sub-label">lwip_sendmsg</a>
              </li>
      

              <li>
                <a href="#lwip_sendto" class="nav-sub-label">lwip_sendto</a>
              </li>
      

              <li>
                <a href="#lwip_socket" class="nav-sub-label">lwip_socket</a>
              </li>
      

              <li>
                <a href="#lwip_select" class="nav-sub-label">lwip_select</a>
              </li>
      

              <li>
                <a href="#lwip_poll" class="nav-sub-label">lwip_poll</a>
              </li>
      

              <li>
                <a href="#lwip_ioctl" class="nav-sub-label">lwip_ioctl</a>
              </li>
      

              <li>
                <a href="#lwip_inet_ntop" class="nav-sub-label">lwip_inet_ntop</a>
              </li>
      

              <li>
                <a href="#lwip_inet_pton" class="nav-sub-label">lwip_inet_pton</a>
              </li>
      

              <li>
                <a href="#lwip_read" class="nav-sub-label">lwip_read</a>
              </li>
      

              <li>
                <a href="#lwip_readv" class="nav-sub-label">lwip_readv</a>
              </li>
      

              <li>
                <a href="#lwip_write" class="nav-sub-label">lwip_write</a>
              </li>
      

              <li>
                <a href="#lwip_writev" class="nav-sub-label">lwip_writev</a>
              </li>
      

              <li>
                <a href="#lwip_close" class="nav-sub-label">lwip_close</a>
              </li>
      

              <li>
                <a href="#closesocket(s)" class="nav-sub-label">closesocket(s)</a>
              </li>
      

              <li>
                <a href="#lwip_ioctl" class="nav-sub-label">lwip_ioctl</a>
              </li>
      

              <li>
                <a href="#ioctlsocket" class="nav-sub-label">ioctlsocket</a>
              </li>
      

              <li>
                <a href="#accept(s,addr,addrlen)" class="nav-sub-label">accept(s,addr,addrlen)</a>
              </li>
      

              <li>
                <a href="#bind(s,name,namelen)" class="nav-sub-label">bind(s,name,namelen)</a>
              </li>
      

              <li>
                <a href="#shutdown(s,how)" class="nav-sub-label">shutdown(s,how)</a>
              </li>
      

              <li>
                <a href="#getpeername(s,name,namelen)" class="nav-sub-label">getpeername(s,name,namelen)</a>
              </li>
      

              <li>
                <a href="#getsockname(s,name,namelen)" class="nav-sub-label">getsockname(s,name,namelen)</a>
              </li>
      

              <li>
                <a href="#setsockopt(s,level,optname,opval,optlen)" class="nav-sub-label">setsockopt(s,level,optname,opval,optlen)</a>
              </li>
      

              <li>
                <a href="#getsockopt(s,level,optname,opval,optlen)" class="nav-sub-label">getsockopt(s,level,optname,opval,optlen)</a>
              </li>
      

              <li>
                <a href="#closesocket(s)" class="nav-sub-label">closesocket(s)</a>
              </li>
      

              <li>
                <a href="#connect(s,name,namelen)" class="nav-sub-label">connect(s,name,namelen)</a>
              </li>
      

              <li>
                <a href="#listen(s,backlog)" class="nav-sub-label">listen(s,backlog)</a>
              </li>
      

              <li>
                <a href="#recv(s,mem,len,flags)" class="nav-sub-label">recv(s,mem,len,flags)</a>
              </li>
      

              <li>
                <a href="#recvmsg(s,message,flags)" class="nav-sub-label">recvmsg(s,message,flags)</a>
              </li>
      

              <li>
                <a href="#recvfrom(s,mem,len,flags,from,fromlen)" class="nav-sub-label">recvfrom(s,mem,len,flags,from,fromlen)</a>
              </li>
      

              <li>
                <a href="#send(s,dataptr,size,flags)" class="nav-sub-label">send(s,dataptr,size,flags)</a>
              </li>
      

              <li>
                <a href="#sendmsg(s,message,flags)" class="nav-sub-label">sendmsg(s,message,flags)</a>
              </li>
      

              <li>
                <a href="#sendto(s,dataptr,size,flags,to,tolen)" class="nav-sub-label">sendto(s,dataptr,size,flags,to,tolen)</a>
              </li>
      

              <li>
                <a href="#socket(domain,type,protocol)" class="nav-sub-label">socket(domain,type,protocol)</a>
              </li>
      

              <li>
                <a href="#select(maxfdp1,readset,writeset,exceptset,timeout)" class="nav-sub-label">select(maxfdp1,readset,writeset,exceptset,timeout)</a>
              </li>
      

              <li>
                <a href="#poll(fds,nfds,timeout)" class="nav-sub-label">poll(fds,nfds,timeout)</a>
              </li>
      

              <li>
                <a href="#ioctlsocket(s,cmd,argp)" class="nav-sub-label">ioctlsocket(s,cmd,argp)</a>
              </li>
      

              <li>
                <a href="#inet_ntop(af,src,dst,size)" class="nav-sub-label">inet_ntop(af,src,dst,size)</a>
              </li>
      

              <li>
                <a href="#inet_pton(af,src,dst)" class="nav-sub-label">inet_pton(af,src,dst)</a>
              </li>
      

              <li>
                <a href="#read(s,mem,len)" class="nav-sub-label">read(s,mem,len)</a>
              </li>
      

              <li>
                <a href="#readv(s,iov,iovcnt)" class="nav-sub-label">readv(s,iov,iovcnt)</a>
              </li>
      

              <li>
                <a href="#write(s,dataptr,len)" class="nav-sub-label">write(s,dataptr,len)</a>
              </li>
      

              <li>
                <a href="#writev(s,iov,iovcnt)" class="nav-sub-label">writev(s,iov,iovcnt)</a>
              </li>
      

              <li>
                <a href="#close(s)" class="nav-sub-label">close(s)</a>
              </li>
      

              <li>
                <a href="#fcntl(s,cmd,val)" class="nav-sub-label">fcntl(s,cmd,val)</a>
              </li>
      

              <li>
                <a href="#ioctl(s,cmd,argp)" class="nav-sub-label">ioctl(s,cmd,argp)</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#functions" class="nav-label">Functions</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#lwip_socket_thread_init" class="nav-sub-label">lwip_socket_thread_init</a>
              </li>
      

              <li>
                <a href="#lwip_socket_thread_cleanup" class="nav-sub-label">lwip_socket_thread_cleanup</a>
              </li>
      

              <li>
                <a href="#fcntl" class="nav-sub-label">fcntl</a>
              </li>
      

              <li>
                <a href="#lwip_accept" class="nav-sub-label">lwip_accept</a>
              </li>
      

              <li>
                <a href="#lwip_bind" class="nav-sub-label">lwip_bind</a>
              </li>
      

              <li>
                <a href="#lwip_shutdown" class="nav-sub-label">lwip_shutdown</a>
              </li>
      

              <li>
                <a href="#lwip_getpeername" class="nav-sub-label">lwip_getpeername</a>
              </li>
      

              <li>
                <a href="#lwip_getsockname" class="nav-sub-label">lwip_getsockname</a>
              </li>
      

              <li>
                <a href="#lwip_getsockopt" class="nav-sub-label">lwip_getsockopt</a>
              </li>
      

              <li>
                <a href="#lwip_setsockopt" class="nav-sub-label">lwip_setsockopt</a>
              </li>
      

              <li>
                <a href="#lwip_close" class="nav-sub-label">lwip_close</a>
              </li>
      

              <li>
                <a href="#lwip_connect" class="nav-sub-label">lwip_connect</a>
              </li>
      

              <li>
                <a href="#lwip_listen" class="nav-sub-label">lwip_listen</a>
              </li>
      

              <li>
                <a href="#lwip_recv" class="nav-sub-label">lwip_recv</a>
              </li>
      

              <li>
                <a href="#lwip_read" class="nav-sub-label">lwip_read</a>
              </li>
      

              <li>
                <a href="#lwip_readv" class="nav-sub-label">lwip_readv</a>
              </li>
      

              <li>
                <a href="#lwip_recvfrom" class="nav-sub-label">lwip_recvfrom</a>
              </li>
      

              <li>
                <a href="#lwip_recvmsg" class="nav-sub-label">lwip_recvmsg</a>
              </li>
      

              <li>
                <a href="#lwip_send" class="nav-sub-label">lwip_send</a>
              </li>
      

              <li>
                <a href="#lwip_sendmsg" class="nav-sub-label">lwip_sendmsg</a>
              </li>
      

              <li>
                <a href="#lwip_sendto" class="nav-sub-label">lwip_sendto</a>
              </li>
      

              <li>
                <a href="#lwip_socket" class="nav-sub-label">lwip_socket</a>
              </li>
      

              <li>
                <a href="#lwip_write" class="nav-sub-label">lwip_write</a>
              </li>
      

              <li>
                <a href="#lwip_writev" class="nav-sub-label">lwip_writev</a>
              </li>
      

              <li>
                <a href="#lwip_select" class="nav-sub-label">lwip_select</a>
              </li>
      

              <li>
                <a href="#lwip_poll" class="nav-sub-label">lwip_poll</a>
              </li>
      

              <li>
                <a href="#lwip_ioctl" class="nav-sub-label">lwip_ioctl</a>
              </li>
      

              <li>
                <a href="#lwip_fcntl" class="nav-sub-label">lwip_fcntl</a>
              </li>
      

              <li>
                <a href="#lwip_inet_pton" class="nav-sub-label">lwip_inet_pton</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#vars" class="nav-label">Vars</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#consts" class="nav-label">Consts</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="# " class="nav-sub-label"> </a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#types" class="nav-label">Types</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#typedefs" class="nav-label">Typedefs</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#sa_family_t" class="nav-sub-label">sa_family_t</a>
              </li>
      

              <li>
                <a href="#in_port_t" class="nav-sub-label">in_port_t</a>
              </li>
      

              <li>
                <a href="#socklen_t" class="nav-sub-label">socklen_t</a>
              </li>
      

              <li>
                <a href="#ip_mreq;" class="nav-sub-label">ip_mreq;</a>
              </li>
      

              <li>
                <a href="#ipv6_mreq;" class="nav-sub-label">ipv6_mreq;</a>
              </li>
      

              <li>
                <a href="#fd_set;
" class="nav-sub-label">fd_set;
</a>
              </li>
      

              <li>
                <a href="#nfds_t" class="nav-sub-label">nfds_t</a>
              </li>
      
            </ul>
            
          </li>
        </ul>
      </nav>
    </div>
    <div class="doc-content">
      <h2 id="Documentation" class="doc-title">Documentation</h2>
      <h3 id="includes">Includes</h3>
      

      <h4 id="lwip/opt.h"><span>lwip/opt.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/opt.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/opt.h"
</pre>

      <h4 id="lwip/ip_addr.h"><span>lwip/ip_addr.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/ip_addr.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/ip_addr.h"
</pre>

      <h4 id="lwip/netif.h"><span>lwip/netif.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/netif.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/netif.h"
</pre>

      <h4 id="lwip/err.h"><span>lwip/err.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/err.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/err.h"
</pre>

      <h4 id="lwip/inet.h"><span>lwip/inet.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/inet.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/inet.h"
</pre>

      <h4 id="lwip/errno.h"><span>lwip/errno.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/errno.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/errno.h"
</pre>

      <h4 id="string.h"><span>string.h</span></h4>
      <pre class="doc-declare"><code>#include &lt;string.h&gt;
</code></pre>
      <pre class="doc-comment">#include <string.h>
</pre>
      <h3 id="macros">Macros</h3>
      

      <h4 id="LWIP_HDR_SOCKETS_H">Marco <span>LWIP_HDR_SOCKETS_H</span></h4>
      <pre class="doc-declare"><code>#define LWIP_HDR_SOCKETS_H
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOV_MAX">Marco <span>IOV_MAX</span></h4>
      <pre class="doc-declare"><code>#define IOV_MAX 65535
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_TRUNC">Marco <span>MSG_TRUNC</span></h4>
      <pre class="doc-declare"><code>#define MSG_TRUNC  4
</code></pre>
      <pre class="doc-comment">/* struct msghdr->msg_flags bit field values */</pre>

      <h4 id="MSG_CTRUNC">Marco <span>MSG_CTRUNC</span></h4>
      <pre class="doc-declare"><code>#define MSG_CTRUNC 8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ALIGN_H(size)">Marco <span>ALIGN_H(size)</span></h4>
      <pre class="doc-declare"><code>#define ALIGN_H(size) (((size) + sizeof(long) - 1U) & ~(sizeof(long)-1U))
</code></pre>
      <pre class="doc-comment">/* cmsg header/data alignment. NOTE: we align to native word size (double word
size on 16-bit arch) so structures are not placed at an unaligned address.
16-bit arch needs double word to ensure 32-bit alignment because socklen_t
could be 32 bits. If we ever have cmsg data with a 64-bit variable, alignment
will need to increase long long */</pre>

      <h4 id="ALIGN_D(size)">Marco <span>ALIGN_D(size)</span></h4>
      <pre class="doc-declare"><code>#define ALIGN_D(size) ALIGN_H(size)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="CMSG_FIRSTHDR(mhdr)">Marco <span>CMSG_FIRSTHDR(mhdr)</span></h4>
      <pre class="doc-declare"><code>#define CMSG_FIRSTHDR(mhdr) \
         ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
          (struct cmsghdr *)(mhdr)->msg_control : \
          (struct cmsghdr *)NULL)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="CMSG_NXTHDR(mhdr, cmsg)">Marco <span>CMSG_NXTHDR(mhdr, cmsg)</span></h4>
      <pre class="doc-declare"><code>#define CMSG_NXTHDR(mhdr, cmsg) \
       (((cmsg) == NULL) ? CMSG_FIRSTHDR(mhdr) : \
        (((u8_t *)(cmsg) + ALIGN_H((cmsg)->cmsg_len) \
                           + ALIGN_D(sizeof(struct cmsghdr)) > \
          (u8_t *)((mhdr)->msg_control) + (mhdr)->msg_controllen) ? \
         (struct cmsghdr *)NULL : \
         (struct cmsghdr *)((void*)((u8_t *)(cmsg) + \
                                     ALIGN_H((cmsg)->cmsg_len)))))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="CMSG_DATA(cmsg)">Marco <span>CMSG_DATA(cmsg)</span></h4>
      <pre class="doc-declare"><code>#define CMSG_DATA(cmsg) ((void*)((u8_t *)(cmsg) + \
                        ALIGN_D(sizeof(struct cmsghdr))))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="CMSG_SPACE(length)">Marco <span>CMSG_SPACE(length)</span></h4>
      <pre class="doc-declare"><code>#define CMSG_SPACE(length) (ALIGN_D(sizeof(struct cmsghdr)) + \
                           ALIGN_H(length))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="CMSG_LEN(length)">Marco <span>CMSG_LEN(length)</span></h4>
      <pre class="doc-declare"><code>#define CMSG_LEN(length) (ALIGN_D(sizeof(struct cmsghdr)) + \
                          length)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IFNAMSIZ">Marco <span>IFNAMSIZ</span></h4>
      <pre class="doc-declare"><code>#define IFNAMSIZ NETIF_NAMESIZE
</code></pre>
      <pre class="doc-comment">/* Set socket options argument */</pre>

      <h4 id="SOCK_STREAM">Marco <span>SOCK_STREAM</span></h4>
      <pre class="doc-declare"><code>#define SOCK_STREAM    1
</code></pre>
      <pre class="doc-comment">/* Socket protocol types (TCP/UDP/RAW) */</pre>

      <h4 id="SOCK_DGRAM">Marco <span>SOCK_DGRAM</span></h4>
      <pre class="doc-declare"><code>#define SOCK_DGRAM     2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SOCK_RAW">Marco <span>SOCK_RAW</span></h4>
      <pre class="doc-declare"><code>#define SOCK_RAW       3
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_REUSEADDR">Marco <span>SO_REUSEADDR</span></h4>
      <pre class="doc-declare"><code>#define SO_REUSEADDR  4 /* Allow local address reuse */
</code></pre>
      <pre class="doc-comment">/*
 * Option flags per-socket. These must match the SOF_ flags in ip.h (checked in init.c)
 */</pre>

      <h4 id="SO_KEEPALIVE">Marco <span>SO_KEEPALIVE</span></h4>
      <pre class="doc-declare"><code>#define SO_KEEPALIVE  8 /* keep connections alive */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_BROADCAST">Marco <span>SO_BROADCAST</span></h4>
      <pre class="doc-declare"><code>#define SO_BROADCAST  32 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_DEBUG">Marco <span>SO_DEBUG</span></h4>
      <pre class="doc-declare"><code>#define SO_DEBUG       1 /* Unimplemented: turn on debugging info recording */
</code></pre>
      <pre class="doc-comment">/*
 * Additional options, not kept in so_options.
 */</pre>

      <h4 id="SO_ACCEPTCONN">Marco <span>SO_ACCEPTCONN</span></h4>
      <pre class="doc-declare"><code>#define SO_ACCEPTCONN  2 /* socket has had listen() */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_DONTROUTE">Marco <span>SO_DONTROUTE</span></h4>
      <pre class="doc-declare"><code>#define SO_DONTROUTE   16 /* Unimplemented: just use interface addresses */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_USELOOPBACK">Marco <span>SO_USELOOPBACK</span></h4>
      <pre class="doc-declare"><code>#define SO_USELOOPBACK 64 /* Unimplemented: bypass hardware when possible */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_LINGER">Marco <span>SO_LINGER</span></h4>
      <pre class="doc-declare"><code>#define SO_LINGER      128 /* linger on close if data present */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_DONTLINGER">Marco <span>SO_DONTLINGER</span></h4>
      <pre class="doc-declare"><code>#define SO_DONTLINGER  ((int)(~SO_LINGER))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_OOBINLINE">Marco <span>SO_OOBINLINE</span></h4>
      <pre class="doc-declare"><code>#define SO_OOBINLINE   256 /* Unimplemented: leave received OOB data in line */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_REUSEPORT">Marco <span>SO_REUSEPORT</span></h4>
      <pre class="doc-declare"><code>#define SO_REUSEPORT   512 /* Unimplemented: allow local address & port reuse */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_SNDBUF">Marco <span>SO_SNDBUF</span></h4>
      <pre class="doc-declare"><code>#define SO_SNDBUF      4097 /* Unimplemented: send buffer size */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_RCVBUF">Marco <span>SO_RCVBUF</span></h4>
      <pre class="doc-declare"><code>#define SO_RCVBUF      4098 /* receive buffer size */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_SNDLOWAT">Marco <span>SO_SNDLOWAT</span></h4>
      <pre class="doc-declare"><code>#define SO_SNDLOWAT    4099 /* Unimplemented: send low-water mark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_RCVLOWAT">Marco <span>SO_RCVLOWAT</span></h4>
      <pre class="doc-declare"><code>#define SO_RCVLOWAT    4100 /* Unimplemented: receive low-water mark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_SNDTIMEO">Marco <span>SO_SNDTIMEO</span></h4>
      <pre class="doc-declare"><code>#define SO_SNDTIMEO    4101 /* send timeout */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_RCVTIMEO">Marco <span>SO_RCVTIMEO</span></h4>
      <pre class="doc-declare"><code>#define SO_RCVTIMEO    4102 /* receive timeout */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_ERROR">Marco <span>SO_ERROR</span></h4>
      <pre class="doc-declare"><code>#define SO_ERROR       4103 /* get error status and clear */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_TYPE">Marco <span>SO_TYPE</span></h4>
      <pre class="doc-declare"><code>#define SO_TYPE        4104 /* get socket type */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_CONTIMEO">Marco <span>SO_CONTIMEO</span></h4>
      <pre class="doc-declare"><code>#define SO_CONTIMEO    4105 /* Unimplemented: connect timeout */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_NO_CHECK">Marco <span>SO_NO_CHECK</span></h4>
      <pre class="doc-declare"><code>#define SO_NO_CHECK    256a /* don't create UDP checksum */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SO_BINDTODEVICE">Marco <span>SO_BINDTODEVICE</span></h4>
      <pre class="doc-declare"><code>#define SO_BINDTODEVICE 256b /* bind to device */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SOL_SOCKET">Marco <span>SOL_SOCKET</span></h4>
      <pre class="doc-declare"><code>#define SOL_SOCKET 4095   /* options for socket level */
</code></pre>
      <pre class="doc-comment">/*
 * Level number for (get/set)sockopt() to apply to socket itself.
 */</pre>

      <h4 id="AF_UNSPEC">Marco <span>AF_UNSPEC</span></h4>
      <pre class="doc-declare"><code>#define AF_UNSPEC      0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="AF_INET">Marco <span>AF_INET</span></h4>
      <pre class="doc-declare"><code>#define AF_INET        2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="AF_INET6">Marco <span>AF_INET6</span></h4>
      <pre class="doc-declare"><code>#define AF_INET6       10
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="AF_INET6">Marco <span>AF_INET6</span></h4>
      <pre class="doc-declare"><code>#define AF_INET6       AF_UNSPEC
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PF_INET">Marco <span>PF_INET</span></h4>
      <pre class="doc-declare"><code>#define PF_INET        AF_INET
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PF_INET6">Marco <span>PF_INET6</span></h4>
      <pre class="doc-declare"><code>#define PF_INET6       AF_INET6
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PF_UNSPEC">Marco <span>PF_UNSPEC</span></h4>
      <pre class="doc-declare"><code>#define PF_UNSPEC      AF_UNSPEC
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_IP">Marco <span>IPPROTO_IP</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_IP     0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_ICMP">Marco <span>IPPROTO_ICMP</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_ICMP   1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_TCP">Marco <span>IPPROTO_TCP</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_TCP    6
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_UDP">Marco <span>IPPROTO_UDP</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_UDP    17
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_IPV6">Marco <span>IPPROTO_IPV6</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_IPV6   41
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_ICMPV6">Marco <span>IPPROTO_ICMPV6</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_ICMPV6 58
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_UDPLITE">Marco <span>IPPROTO_UDPLITE</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_UDPLITE 136
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPPROTO_RAW">Marco <span>IPPROTO_RAW</span></h4>
      <pre class="doc-declare"><code>#define IPPROTO_RAW    255
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_PEEK">Marco <span>MSG_PEEK</span></h4>
      <pre class="doc-declare"><code>#define MSG_PEEK      1   /* Peeks at an incoming message */
</code></pre>
      <pre class="doc-comment">/* Flags we can use with send and recv. */</pre>

      <h4 id="MSG_WAITALL">Marco <span>MSG_WAITALL</span></h4>
      <pre class="doc-declare"><code>#define MSG_WAITALL   2   /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_OOB">Marco <span>MSG_OOB</span></h4>
      <pre class="doc-declare"><code>#define MSG_OOB       4   /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_DONTWAIT">Marco <span>MSG_DONTWAIT</span></h4>
      <pre class="doc-declare"><code>#define MSG_DONTWAIT  8   /* Nonblocking i/o for this operation only */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_MORE">Marco <span>MSG_MORE</span></h4>
      <pre class="doc-declare"><code>#define MSG_MORE      16   /* Sender will send more */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="MSG_NOSIGNAL">Marco <span>MSG_NOSIGNAL</span></h4>
      <pre class="doc-declare"><code>#define MSG_NOSIGNAL  32   /* Uninmplemented: Requests not to send the SIGPIPE signal if an attempt to send is made on a stream-oriented socket that is no longer connected. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IP_TOS">Marco <span>IP_TOS</span></h4>
      <pre class="doc-declare"><code>#define IP_TOS            1
</code></pre>
      <pre class="doc-comment">/*
 * Options for level IPPROTO_IP
 */</pre>

      <h4 id="IP_TTL">Marco <span>IP_TTL</span></h4>
      <pre class="doc-declare"><code>#define IP_TTL            2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IP_PKTINFO">Marco <span>IP_PKTINFO</span></h4>
      <pre class="doc-declare"><code>#define IP_PKTINFO        8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="TCP_NODELAY">Marco <span>TCP_NODELAY</span></h4>
      <pre class="doc-declare"><code>#define TCP_NODELAY   1   /* don't delay send to coalesce packets */
</code></pre>
      <pre class="doc-comment">/*
 * Options for level IPPROTO_TCP
 */</pre>

      <h4 id="TCP_KEEPALIVE">Marco <span>TCP_KEEPALIVE</span></h4>
      <pre class="doc-declare"><code>#define TCP_KEEPALIVE 2   /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="TCP_KEEPIDLE">Marco <span>TCP_KEEPIDLE</span></h4>
      <pre class="doc-declare"><code>#define TCP_KEEPIDLE  3   /* set pcb->keep_idle  - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="TCP_KEEPINTVL">Marco <span>TCP_KEEPINTVL</span></h4>
      <pre class="doc-declare"><code>#define TCP_KEEPINTVL 4   /* set pcb->keep_intvl - Use seconds for get/setsockopt */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="TCP_KEEPCNT">Marco <span>TCP_KEEPCNT</span></h4>
      <pre class="doc-declare"><code>#define TCP_KEEPCNT   5   /* set pcb->keep_cnt   - Use number of probes sent for get/setsockopt */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPV6_CHECKSUM">Marco <span>IPV6_CHECKSUM</span></h4>
      <pre class="doc-declare"><code>#define IPV6_CHECKSUM      7 /* RFC3542: calculate and insert the ICMPv6 checksum for raw sockets. */
</code></pre>
      <pre class="doc-comment">/*
 * Options for level IPPROTO_IPV6
 */</pre>

      <h4 id="IPV6_V6ONLY">Marco <span>IPV6_V6ONLY</span></h4>
      <pre class="doc-declare"><code>#define IPV6_V6ONLY        27 /* RFC3493: boolean control to restrict AF_INET6 sockets to IPv6 communications only. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="UDPLITE_SEND_CSCOV">Marco <span>UDPLITE_SEND_CSCOV</span></h4>
      <pre class="doc-declare"><code>#define UDPLITE_SEND_CSCOV 1 /* sender checksum coverage */
</code></pre>
      <pre class="doc-comment">/*
 * Options for level IPPROTO_UDPLITE
 */</pre>

      <h4 id="UDPLITE_RECV_CSCOV">Marco <span>UDPLITE_RECV_CSCOV</span></h4>
      <pre class="doc-declare"><code>#define UDPLITE_RECV_CSCOV 2 /* minimal receiver checksum coverage */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IP_MULTICAST_TTL">Marco <span>IP_MULTICAST_TTL</span></h4>
      <pre class="doc-declare"><code>#define IP_MULTICAST_TTL  5
</code></pre>
      <pre class="doc-comment">/*
 * Options and types for UDP multicast traffic handling
 */</pre>

      <h4 id="IP_MULTICAST_IF">Marco <span>IP_MULTICAST_IF</span></h4>
      <pre class="doc-declare"><code>#define IP_MULTICAST_IF   6
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IP_MULTICAST_LOOP">Marco <span>IP_MULTICAST_LOOP</span></h4>
      <pre class="doc-declare"><code>#define IP_MULTICAST_LOOP 7
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IP_ADD_MEMBERSHIP">Marco <span>IP_ADD_MEMBERSHIP</span></h4>
      <pre class="doc-declare"><code>#define IP_ADD_MEMBERSHIP 3
</code></pre>
      <pre class="doc-comment">/*
 * Options and types related to multicast membership
 */</pre>

      <h4 id="IP_DROP_MEMBERSHIP">Marco <span>IP_DROP_MEMBERSHIP</span></h4>
      <pre class="doc-declare"><code>#define IP_DROP_MEMBERSHIP 4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPV6_JOIN_GROUP">Marco <span>IPV6_JOIN_GROUP</span></h4>
      <pre class="doc-declare"><code>#define IPV6_JOIN_GROUP     12
</code></pre>
      <pre class="doc-comment">/*
 * Options and types related to IPv6 multicast membership
 */</pre>

      <h4 id="IPV6_ADD_MEMBERSHIP">Marco <span>IPV6_ADD_MEMBERSHIP</span></h4>
      <pre class="doc-declare"><code>#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPV6_LEAVE_GROUP">Marco <span>IPV6_LEAVE_GROUP</span></h4>
      <pre class="doc-declare"><code>#define IPV6_LEAVE_GROUP    13
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPV6_DROP_MEMBERSHIP">Marco <span>IPV6_DROP_MEMBERSHIP</span></h4>
      <pre class="doc-declare"><code>#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_TOS_MASK">Marco <span>IPTOS_TOS_MASK</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_TOS_MASK         1E
</code></pre>
      <pre class="doc-comment">/*
 * The Type of Service provides an indication of the abstract
 * parameters of the quality of service desired.  These parameters are
 * to be used to guide the selection of the actual service parameters
 * when transmitting a datagram through a particular network.  Several
 * networks offer service precedence, which somehow treats high
 * precedence traffic as more important than other traffic (generally
 * by accepting only traffic above a certain precedence at time of high
 * load).  The major choice is a three way tradeoff between low-delay,
 * high-reliability, and high-throughput.
 * The use of the Delay, Throughput, and Reliability indications may
 * increase the cost (in some sense) of the service.  In many networks
 * better performance for one of these parameters is coupled with worse
 * performance on another.  Except for very unusual cases at most two
 * of these three indications should be set.
 */</pre>

      <h4 id="IPTOS_TOS(tos)">Marco <span>IPTOS_TOS(tos)</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_TOS(tos)         ((tos) & IPTOS_TOS_MASK)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_LOWDELAY">Marco <span>IPTOS_LOWDELAY</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_LOWDELAY         16
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_THROUGHPUT">Marco <span>IPTOS_THROUGHPUT</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_THROUGHPUT       8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_RELIABILITY">Marco <span>IPTOS_RELIABILITY</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_RELIABILITY      4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_LOWCOST">Marco <span>IPTOS_LOWCOST</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_LOWCOST          2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_MINCOST">Marco <span>IPTOS_MINCOST</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_MINCOST          IPTOS_LOWCOST
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_MASK">Marco <span>IPTOS_PREC_MASK</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_MASK                0xe0
</code></pre>
      <pre class="doc-comment">/*
 * The Network Control precedence designation is intended to be used
 * within a network only.  The actual use and control of that
 * designation is up to each network. The Internetwork Control
 * designation is intended for use by gateway control originators only.
 * If the actual use of these precedence designations is of concern to
 * a particular network, it is the responsibility of that network to
 * control the access to, and use of, those precedence designations.
 */</pre>

      <h4 id="IPTOS_PREC(tos)">Marco <span>IPTOS_PREC(tos)</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC(tos)               ((tos) & IPTOS_PREC_MASK)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_NETCONTROL">Marco <span>IPTOS_PREC_NETCONTROL</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_NETCONTROL          0xe0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_INTERNETCONTROL">Marco <span>IPTOS_PREC_INTERNETCONTROL</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_INTERNETCONTROL     0xc0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_CRITIC_ECP">Marco <span>IPTOS_PREC_CRITIC_ECP</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_CRITIC_ECP          0xa0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_FLASHOVERRIDE">Marco <span>IPTOS_PREC_FLASHOVERRIDE</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_FLASHOVERRIDE       128
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_FLASH">Marco <span>IPTOS_PREC_FLASH</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_FLASH               96
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_IMMEDIATE">Marco <span>IPTOS_PREC_IMMEDIATE</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_IMMEDIATE           64
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_PRIORITY">Marco <span>IPTOS_PREC_PRIORITY</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_PRIORITY            32
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IPTOS_PREC_ROUTINE">Marco <span>IPTOS_PREC_ROUTINE</span></h4>
      <pre class="doc-declare"><code>#define IPTOS_PREC_ROUTINE             0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOCPARM_MASK">Marco <span>IOCPARM_MASK</span></h4>
      <pre class="doc-declare"><code>#define IOCPARM_MASK   0x7fU          /* parameters must be < 128 bytes */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOC_VOID">Marco <span>IOC_VOID</span></h4>
      <pre class="doc-declare"><code>#define IOC_VOID       0x20000000UL   /* no parameters */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOC_OUT">Marco <span>IOC_OUT</span></h4>
      <pre class="doc-declare"><code>#define IOC_OUT        0x40000000UL   /* copy out parameters */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOC_IN">Marco <span>IOC_IN</span></h4>
      <pre class="doc-declare"><code>#define IOC_IN         0x80000000UL   /* copy in parameters */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IOC_INOUT">Marco <span>IOC_INOUT</span></h4>
      <pre class="doc-declare"><code>#define IOC_INOUT      (IOC_IN|IOC_OUT)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="_IO(x,y)">Marco <span>_IO(x,y)</span></h4>
      <pre class="doc-declare"><code>#define _IO(x,y)       ((long)(IOC_VOID|((x)<<8)|(y)))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="_IOR(x,y,t)">Marco <span>_IOR(x,y,t)</span></h4>
      <pre class="doc-declare"><code>#define _IOR(x,y,t)    ((long)(IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="_IOW(x,y,t)">Marco <span>_IOW(x,y,t)</span></h4>
      <pre class="doc-declare"><code>#define _IOW(x,y,t)    ((long)(IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FIONREAD">Marco <span>FIONREAD</span></h4>
      <pre class="doc-declare"><code>#define FIONREAD   _IOR('f', 127, unsigned long) /* get # bytes to read */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FIONBIO">Marco <span>FIONBIO</span></h4>
      <pre class="doc-declare"><code>#define FIONBIO    _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SIOCSHIWAT">Marco <span>SIOCSHIWAT</span></h4>
      <pre class="doc-declare"><code>#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SIOCGHIWAT">Marco <span>SIOCGHIWAT</span></h4>
      <pre class="doc-declare"><code>#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SIOCSLOWAT">Marco <span>SIOCSLOWAT</span></h4>
      <pre class="doc-declare"><code>#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SIOCGLOWAT">Marco <span>SIOCGLOWAT</span></h4>
      <pre class="doc-declare"><code>#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SIOCATMARK">Marco <span>SIOCATMARK</span></h4>
      <pre class="doc-declare"><code>#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="F_GETFL">Marco <span>F_GETFL</span></h4>
      <pre class="doc-declare"><code>#define F_GETFL 3
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="F_SETFL">Marco <span>F_SETFL</span></h4>
      <pre class="doc-declare"><code>#define F_SETFL 4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="O_NONBLOCK">Marco <span>O_NONBLOCK</span></h4>
      <pre class="doc-declare"><code>#define O_NONBLOCK 1 /* nonblocking I/O */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="O_NDELAY">Marco <span>O_NDELAY</span></h4>
      <pre class="doc-declare"><code>#define O_NDELAY   O_NONBLOCK /* same as O_NONBLOCK, for compatibility */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="O_RDONLY">Marco <span>O_RDONLY</span></h4>
      <pre class="doc-declare"><code>#define O_RDONLY   2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="O_WRONLY">Marco <span>O_WRONLY</span></h4>
      <pre class="doc-declare"><code>#define O_WRONLY   4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="O_RDWR">Marco <span>O_RDWR</span></h4>
      <pre class="doc-declare"><code>#define O_RDWR     (O_RDONLY|O_WRONLY)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SHUT_RD">Marco <span>SHUT_RD</span></h4>
      <pre class="doc-declare"><code>#define SHUT_RD  0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SHUT_WR">Marco <span>SHUT_WR</span></h4>
      <pre class="doc-declare"><code>#define SHUT_WR  1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="SHUT_RDWR">Marco <span>SHUT_RDWR</span></h4>
      <pre class="doc-declare"><code>#define SHUT_RDWR 2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FD_SETSIZE">Marco <span>FD_SETSIZE</span></h4>
      <pre class="doc-declare"><code>#define FD_SETSIZE   MEMP_NUM_NETCONN
</code></pre>
      <pre class="doc-comment">/* Make FD_SETSIZE match NUM_SOCKETS in socket.c */</pre>

      <h4 id="LWIP_SELECT_MAXNFDS">Marco <span>LWIP_SELECT_MAXNFDS</span></h4>
      <pre class="doc-declare"><code>#define LWIP_SELECT_MAXNFDS (FD_SETSIZE + LWIP_SOCKET_OFFSET)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FDSETSAFESET(n, code)">Marco <span>FDSETSAFESET(n, code)</span></h4>
      <pre class="doc-declare"><code>#define FDSETSAFESET(n, code) do { \
 if (((n) - LWIP_SOCKET_OFFSET < MEMP_NUM_NETCONN) && (((int)(n) - LWIP_SOCKET_OFFSET) >= 0)) { \
 code; }} while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FDSETSAFEGET(n, code)">Marco <span>FDSETSAFEGET(n, code)</span></h4>
      <pre class="doc-declare"><code>#define FDSETSAFEGET(n, code) (((n) - LWIP_SOCKET_OFFSET < MEMP_NUM_NETCONN) && (((int)(n) - LWIP_SOCKET_OFFSET) >= 0) ?\
 (code) : 0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FD_SET(n, p)">Marco <span>FD_SET(n, p)</span></h4>
      <pre class="doc-declare"><code>#define FD_SET(n, p) FDSETSAFESET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] = (u8_t)((p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] | (1 << (((n)-LWIP_SOCKET_OFFSET) & 7))))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FD_CLR(n, p)">Marco <span>FD_CLR(n, p)</span></h4>
      <pre class="doc-declare"><code>#define FD_CLR(n, p) FDSETSAFESET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] = (u8_t)((p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] & ~(1 << (((n)-LWIP_SOCKET_OFFSET) & 7))))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FD_ISSET(n,p)">Marco <span>FD_ISSET(n,p)</span></h4>
      <pre class="doc-declare"><code>#define FD_ISSET(n,p) FDSETSAFEGET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] &  (1 << (((n)-LWIP_SOCKET_OFFSET) & 7)))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="FD_ZERO(p)">Marco <span>FD_ZERO(p)</span></h4>
      <pre class="doc-declare"><code>#define FD_ZERO(p)   memset((void*)(p), 0, sizeof(*(p)))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="LWIP_SELECT_MAXNFDS">Marco <span>LWIP_SELECT_MAXNFDS</span></h4>
      <pre class="doc-declare"><code>#define LWIP_SELECT_MAXNFDS FD_SETSIZE
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLIN">Marco <span>POLLIN</span></h4>
      <pre class="doc-declare"><code>#define POLLIN    1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLOUT">Marco <span>POLLOUT</span></h4>
      <pre class="doc-declare"><code>#define POLLOUT   2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLERR">Marco <span>POLLERR</span></h4>
      <pre class="doc-declare"><code>#define POLLERR   4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLNVAL">Marco <span>POLLNVAL</span></h4>
      <pre class="doc-declare"><code>#define POLLNVAL  8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLRDNORM">Marco <span>POLLRDNORM</span></h4>
      <pre class="doc-declare"><code>#define POLLRDNORM 16
</code></pre>
      <pre class="doc-comment">/* Below values are unimplemented */</pre>

      <h4 id="POLLRDBAND">Marco <span>POLLRDBAND</span></h4>
      <pre class="doc-declare"><code>#define POLLRDBAND 32
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLPRI">Marco <span>POLLPRI</span></h4>
      <pre class="doc-declare"><code>#define POLLPRI   64
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLWRNORM">Marco <span>POLLWRNORM</span></h4>
      <pre class="doc-declare"><code>#define POLLWRNORM 128
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLWRBAND">Marco <span>POLLWRBAND</span></h4>
      <pre class="doc-declare"><code>#define POLLWRBAND 256
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="POLLHUP">Marco <span>POLLHUP</span></h4>
      <pre class="doc-declare"><code>#define POLLHUP   512
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="LWIP_TIMEVAL_PRIVATE">Marco <span>LWIP_TIMEVAL_PRIVATE</span></h4>
      <pre class="doc-declare"><code>#define LWIP_TIMEVAL_PRIVATE 1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_socket_init()">Marco <span>lwip_socket_init()</span></h4>
      <pre class="doc-declare"><code>#define lwip_socket_init() /* Compatibility define, no init needed. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_accept">Marco <span>lwip_accept</span></h4>
      <pre class="doc-declare"><code>#define lwip_accept      accept
</code></pre>
      <pre class="doc-comment">/* This helps code parsers/code completion by not having the COMPAT functions as defines */</pre>

      <h4 id="lwip_bind">Marco <span>lwip_bind</span></h4>
      <pre class="doc-declare"><code>#define lwip_bind        bind
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_shutdown">Marco <span>lwip_shutdown</span></h4>
      <pre class="doc-declare"><code>#define lwip_shutdown    shutdown
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getpeername">Marco <span>lwip_getpeername</span></h4>
      <pre class="doc-declare"><code>#define lwip_getpeername getpeername
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getsockname">Marco <span>lwip_getsockname</span></h4>
      <pre class="doc-declare"><code>#define lwip_getsockname getsockname
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_setsockopt">Marco <span>lwip_setsockopt</span></h4>
      <pre class="doc-declare"><code>#define lwip_setsockopt  setsockopt
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getsockopt">Marco <span>lwip_getsockopt</span></h4>
      <pre class="doc-declare"><code>#define lwip_getsockopt  getsockopt
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_close">Marco <span>lwip_close</span></h4>
      <pre class="doc-declare"><code>#define lwip_close       closesocket
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_connect">Marco <span>lwip_connect</span></h4>
      <pre class="doc-declare"><code>#define lwip_connect     connect
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_listen">Marco <span>lwip_listen</span></h4>
      <pre class="doc-declare"><code>#define lwip_listen      listen
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recv">Marco <span>lwip_recv</span></h4>
      <pre class="doc-declare"><code>#define lwip_recv        recv
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recvmsg">Marco <span>lwip_recvmsg</span></h4>
      <pre class="doc-declare"><code>#define lwip_recvmsg     recvmsg
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recvfrom">Marco <span>lwip_recvfrom</span></h4>
      <pre class="doc-declare"><code>#define lwip_recvfrom    recvfrom
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_send">Marco <span>lwip_send</span></h4>
      <pre class="doc-declare"><code>#define lwip_send        send
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_sendmsg">Marco <span>lwip_sendmsg</span></h4>
      <pre class="doc-declare"><code>#define lwip_sendmsg     sendmsg
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_sendto">Marco <span>lwip_sendto</span></h4>
      <pre class="doc-declare"><code>#define lwip_sendto      sendto
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_socket">Marco <span>lwip_socket</span></h4>
      <pre class="doc-declare"><code>#define lwip_socket      socket
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_select">Marco <span>lwip_select</span></h4>
      <pre class="doc-declare"><code>#define lwip_select      select
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_poll">Marco <span>lwip_poll</span></h4>
      <pre class="doc-declare"><code>#define lwip_poll        poll
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_ioctl">Marco <span>lwip_ioctl</span></h4>
      <pre class="doc-declare"><code>#define lwip_ioctl       ioctlsocket
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_inet_ntop">Marco <span>lwip_inet_ntop</span></h4>
      <pre class="doc-declare"><code>#define lwip_inet_ntop   inet_ntop
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_inet_pton">Marco <span>lwip_inet_pton</span></h4>
      <pre class="doc-declare"><code>#define lwip_inet_pton   inet_pton
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_read">Marco <span>lwip_read</span></h4>
      <pre class="doc-declare"><code>#define lwip_read        read
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_readv">Marco <span>lwip_readv</span></h4>
      <pre class="doc-declare"><code>#define lwip_readv       readv
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_write">Marco <span>lwip_write</span></h4>
      <pre class="doc-declare"><code>#define lwip_write       write
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_writev">Marco <span>lwip_writev</span></h4>
      <pre class="doc-declare"><code>#define lwip_writev      writev
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_close">Marco <span>lwip_close</span></h4>
      <pre class="doc-declare"><code>#define lwip_close       close
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="closesocket(s)">Marco <span>closesocket(s)</span></h4>
      <pre class="doc-declare"><code>#define closesocket(s)   close(s)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_ioctl">Marco <span>lwip_ioctl</span></h4>
      <pre class="doc-declare"><code>#define lwip_ioctl       ioctl
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ioctlsocket">Marco <span>ioctlsocket</span></h4>
      <pre class="doc-declare"><code>#define ioctlsocket      ioctl
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="accept(s,addr,addrlen)">Marco <span>accept(s,addr,addrlen)</span></h4>
      <pre class="doc-declare"><code>#define accept(s,addr,addrlen)                   lwip_accept(s,addr,addrlen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="bind(s,name,namelen)">Marco <span>bind(s,name,namelen)</span></h4>
      <pre class="doc-declare"><code>#define bind(s,name,namelen)                     lwip_bind(s,name,namelen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="shutdown(s,how)">Marco <span>shutdown(s,how)</span></h4>
      <pre class="doc-declare"><code>#define shutdown(s,how)                          lwip_shutdown(s,how)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="getpeername(s,name,namelen)">Marco <span>getpeername(s,name,namelen)</span></h4>
      <pre class="doc-declare"><code>#define getpeername(s,name,namelen)              lwip_getpeername(s,name,namelen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="getsockname(s,name,namelen)">Marco <span>getsockname(s,name,namelen)</span></h4>
      <pre class="doc-declare"><code>#define getsockname(s,name,namelen)              lwip_getsockname(s,name,namelen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="setsockopt(s,level,optname,opval,optlen)">Marco <span>setsockopt(s,level,optname,opval,optlen)</span></h4>
      <pre class="doc-declare"><code>#define setsockopt(s,level,optname,opval,optlen) lwip_setsockopt(s,level,optname,opval,optlen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="getsockopt(s,level,optname,opval,optlen)">Marco <span>getsockopt(s,level,optname,opval,optlen)</span></h4>
      <pre class="doc-declare"><code>#define getsockopt(s,level,optname,opval,optlen) lwip_getsockopt(s,level,optname,opval,optlen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="closesocket(s)">Marco <span>closesocket(s)</span></h4>
      <pre class="doc-declare"><code>#define closesocket(s)                           lwip_close(s)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="connect(s,name,namelen)">Marco <span>connect(s,name,namelen)</span></h4>
      <pre class="doc-declare"><code>#define connect(s,name,namelen)                  lwip_connect(s,name,namelen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="listen(s,backlog)">Marco <span>listen(s,backlog)</span></h4>
      <pre class="doc-declare"><code>#define listen(s,backlog)                        lwip_listen(s,backlog)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="recv(s,mem,len,flags)">Marco <span>recv(s,mem,len,flags)</span></h4>
      <pre class="doc-declare"><code>#define recv(s,mem,len,flags)                    lwip_recv(s,mem,len,flags)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="recvmsg(s,message,flags)">Marco <span>recvmsg(s,message,flags)</span></h4>
      <pre class="doc-declare"><code>#define recvmsg(s,message,flags)                 lwip_recvmsg(s,message,flags)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="recvfrom(s,mem,len,flags,from,fromlen)">Marco <span>recvfrom(s,mem,len,flags,from,fromlen)</span></h4>
      <pre class="doc-declare"><code>#define recvfrom(s,mem,len,flags,from,fromlen)   lwip_recvfrom(s,mem,len,flags,from,fromlen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="send(s,dataptr,size,flags)">Marco <span>send(s,dataptr,size,flags)</span></h4>
      <pre class="doc-declare"><code>#define send(s,dataptr,size,flags)               lwip_send(s,dataptr,size,flags)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="sendmsg(s,message,flags)">Marco <span>sendmsg(s,message,flags)</span></h4>
      <pre class="doc-declare"><code>#define sendmsg(s,message,flags)                 lwip_sendmsg(s,message,flags)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="sendto(s,dataptr,size,flags,to,tolen)">Marco <span>sendto(s,dataptr,size,flags,to,tolen)</span></h4>
      <pre class="doc-declare"><code>#define sendto(s,dataptr,size,flags,to,tolen)    lwip_sendto(s,dataptr,size,flags,to,tolen)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="socket(domain,type,protocol)">Marco <span>socket(domain,type,protocol)</span></h4>
      <pre class="doc-declare"><code>#define socket(domain,type,protocol)             lwip_socket(domain,type,protocol)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="select(maxfdp1,readset,writeset,exceptset,timeout)">Marco <span>select(maxfdp1,readset,writeset,exceptset,timeout)</span></h4>
      <pre class="doc-declare"><code>#define select(maxfdp1,readset,writeset,exceptset,timeout)    lwip_select(maxfdp1,readset,writeset,exceptset,timeout)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="poll(fds,nfds,timeout)">Marco <span>poll(fds,nfds,timeout)</span></h4>
      <pre class="doc-declare"><code>#define poll(fds,nfds,timeout)                   lwip_poll(fds,nfds,timeout)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="ioctlsocket(s,cmd,argp)">Marco <span>ioctlsocket(s,cmd,argp)</span></h4>
      <pre class="doc-declare"><code>#define ioctlsocket(s,cmd,argp)                  lwip_ioctl(s,cmd,argp)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="inet_ntop(af,src,dst,size)">Marco <span>inet_ntop(af,src,dst,size)</span></h4>
      <pre class="doc-declare"><code>#define inet_ntop(af,src,dst,size)               lwip_inet_ntop(af,src,dst,size)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="inet_pton(af,src,dst)">Marco <span>inet_pton(af,src,dst)</span></h4>
      <pre class="doc-declare"><code>#define inet_pton(af,src,dst)                    lwip_inet_pton(af,src,dst)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="read(s,mem,len)">Marco <span>read(s,mem,len)</span></h4>
      <pre class="doc-declare"><code>#define read(s,mem,len)                          lwip_read(s,mem,len)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="readv(s,iov,iovcnt)">Marco <span>readv(s,iov,iovcnt)</span></h4>
      <pre class="doc-declare"><code>#define readv(s,iov,iovcnt)                      lwip_readv(s,iov,iovcnt)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="write(s,dataptr,len)">Marco <span>write(s,dataptr,len)</span></h4>
      <pre class="doc-declare"><code>#define write(s,dataptr,len)                     lwip_write(s,dataptr,len)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="writev(s,iov,iovcnt)">Marco <span>writev(s,iov,iovcnt)</span></h4>
      <pre class="doc-declare"><code>#define writev(s,iov,iovcnt)                     lwip_writev(s,iov,iovcnt)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="close(s)">Marco <span>close(s)</span></h4>
      <pre class="doc-declare"><code>#define close(s)                                 lwip_close(s)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="fcntl(s,cmd,val)">Marco <span>fcntl(s,cmd,val)</span></h4>
      <pre class="doc-declare"><code>#define fcntl(s,cmd,val)                         lwip_fcntl(s,cmd,val)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>

      <h4 id="ioctl(s,cmd,argp)">Marco <span>ioctl(s,cmd,argp)</span></h4>
      <pre class="doc-declare"><code>#define ioctl(s,cmd,argp)                        lwip_ioctl(s,cmd,argp)
</code></pre>
      <pre class="doc-comment">/** @ingroup socket */</pre>
      <h3 id="functions">Functions</h3>
      

      <h4 id="lwip_socket_thread_init">Func <span>lwip_socket_thread_init</span></h4>
      <pre class="doc-declare"><code>err_t lwip_socket_thread_init(void *task);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_socket_thread_cleanup">Func <span>lwip_socket_thread_cleanup</span></h4>
      <pre class="doc-declare"><code>err_t lwip_socket_thread_cleanup(void *task);</code></pre>
      <pre class="doc-comment">/* LWIP_NETCONN_SEM_PER_THREAD==1: initialize thread-local semaphore */</pre>

      <h4 id="fcntl">Func <span>fcntl</span></h4>
      <pre class="doc-declare"><code>int fcntl(int s, int cmd, ...);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_accept">Func <span>lwip_accept</span></h4>
      <pre class="doc-declare"><code>int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_bind">Func <span>lwip_bind</span></h4>
      <pre class="doc-declare"><code>int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_shutdown">Func <span>lwip_shutdown</span></h4>
      <pre class="doc-declare"><code>int lwip_shutdown(int s, int how);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getpeername">Func <span>lwip_getpeername</span></h4>
      <pre class="doc-declare"><code>int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getsockname">Func <span>lwip_getsockname</span></h4>
      <pre class="doc-declare"><code>int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_getsockopt">Func <span>lwip_getsockopt</span></h4>
      <pre class="doc-declare"><code>int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_setsockopt">Func <span>lwip_setsockopt</span></h4>
      <pre class="doc-declare"><code>int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_close">Func <span>lwip_close</span></h4>
      <pre class="doc-declare"><code>int lwip_close(int s);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_connect">Func <span>lwip_connect</span></h4>
      <pre class="doc-declare"><code>int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_listen">Func <span>lwip_listen</span></h4>
      <pre class="doc-declare"><code>int lwip_listen(int s, int backlog);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recv">Func <span>lwip_recv</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_recv(int s, void *mem, size_t len, int flags);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_read">Func <span>lwip_read</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_read(int s, void *mem, size_t len);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_readv">Func <span>lwip_readv</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_readv(int s, const struct iovec *iov, int iovcnt);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recvfrom">Func <span>lwip_recvfrom</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_recvfrom(int s, void *mem, size_t len, int flags,
     struct sockaddr *from, socklen_t *fromlen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_recvmsg">Func <span>lwip_recvmsg</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_recvmsg(int s, struct msghdr *message, int flags);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_send">Func <span>lwip_send</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_send(int s, const void *dataptr, size_t size, int flags);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_sendmsg">Func <span>lwip_sendmsg</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_sendmsg(int s, const struct msghdr *message, int flags);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_sendto">Func <span>lwip_sendto</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_sendto(int s, const void *dataptr, size_t size, int flags,
   const struct sockaddr *to, socklen_t tolen);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_socket">Func <span>lwip_socket</span></h4>
      <pre class="doc-declare"><code>int lwip_socket(int domain, int type, int protocol);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_write">Func <span>lwip_write</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_write(int s, const void *dataptr, size_t size);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_writev">Func <span>lwip_writev</span></h4>
      <pre class="doc-declare"><code>ssize_t lwip_writev(int s, const struct iovec *iov, int iovcnt);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_select">Func <span>lwip_select</span></h4>
      <pre class="doc-declare"><code>int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
               struct timeval *timeout);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_poll">Func <span>lwip_poll</span></h4>
      <pre class="doc-declare"><code>int lwip_poll(struct pollfd *fds, nfds_t nfds, int timeout);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_ioctl">Func <span>lwip_ioctl</span></h4>
      <pre class="doc-declare"><code>int lwip_ioctl(int s, long cmd, void *argp);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_fcntl">Func <span>lwip_fcntl</span></h4>
      <pre class="doc-declare"><code>int lwip_fcntl(int s, int cmd, int val);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="lwip_inet_pton">Func <span>lwip_inet_pton</span></h4>
      <pre class="doc-declare"><code>int lwip_inet_pton(int af, const char *src, void *dst);</code></pre>
      <pre class="doc-comment"></pre>
      <h3 id="vars">Vars</h3>
      
      <h3 id="consts">Consts</h3>
      

      <h4 id=" ">Const <span> </span></h4>
      <pre class="doc-declare"><code>const char *lwip_inet_ntop(int af, const void *src, char *dst, socklen_t size);</code></pre>
      <pre class="doc-comment"></pre>
      <h3 id="types">Types</h3>
      
      <h3 id="typedefs">Typedefs</h3>
      

      <h4 id="sa_family_t">Typedef <span>sa_family_t</span></h4>
      <pre class="doc-declare"><code>typedef u8_t sa_family_t;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="in_port_t">Typedef <span>in_port_t</span></h4>
      <pre class="doc-declare"><code>typedef u16_t in_port_t;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="socklen_t">Typedef <span>socklen_t</span></h4>
      <pre class="doc-declare"><code>typedef u32_t socklen_t;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ip_mreq;">Typedef <span>ip_mreq;</span></h4>
      <pre class="doc-declare"><code>typedef struct ip_mreq {
   struct in_addr imr_multiaddr; /* IP multicast address of group */
   struct in_addr imr_interface; /* local IP address of interface */
} ip_mreq;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ipv6_mreq;">Typedef <span>ipv6_mreq;</span></h4>
      <pre class="doc-declare"><code>typedef struct ipv6_mreq {
 struct in6_addr ipv6mr_multiaddr; /*  IPv6 multicast addr */
 unsigned int   ipv6mr_interface; /*  interface index, or 0 */
} ipv6_mreq;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="fd_set;
">Typedef <span>fd_set;
</span></h4>
      <pre class="doc-declare"><code>typedef struct fd_set
{
 unsigned char fd_bits [(FD_SETSIZE+7)/8];
} fd_set;
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="nfds_t">Typedef <span>nfds_t</span></h4>
      <pre class="doc-declare"><code>typedef unsigned int nfds_t;
</code></pre>
      <pre class="doc-comment"></pre>
    </div>
  </body>
</html>
            